package com.fh.common.aspect;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

import com.fh.common.util.ReflectUtils;

/**
 * @author Qiu,Junda 
 * @date 2019年4月10日
 * @description
 */
@Aspect
@Component
public class BaseMapperAspect {

//	@Pointcut("execution(public * com.baomidou.mybatisplus.core.mapper.selectById(..))")
	@Pointcut("execution(public * com.baomidou.mybatisplus.extension.service.impl.ServiceImpl.getById(..))")
	public void getByIdPointCut() { 
		
	}
	
	@Around("getByIdPointCut()")
	public Object around(ProceedingJoinPoint point) throws Throwable {
		//执行方法
		Object result = point.proceed();
		Class classz=result.getClass();
		Field field= ReflectUtils.getClassFieldByName(classz, "delFlag");

		if(field!=null) {
//			String fieldName=field.getName();
//			String methodString=fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
//			Method method=classz.getMethod("get"+methodString);
			field.setAccessible(true);
			field.get(result);
			Integer delFlag=(Integer) field.get(result);
			if(delFlag==1) {
				return null;
			}
		}
		return result;
	}
}
